1. Field
This disclosure relates generally to motors, and more specifically, to a method and controller for detecting a stall condition in a motor during micro-stepping.
2. Related Art
A stepping motor is a type of motor that is incrementally stepped between various rotational positions. A typical stepping motor includes two coils and a rotor. The coils are oriented generally perpendicular to each other and are alternately driven to cause the rotor to turn. A motor controller is used to control the energizing and de-energizing of the coils. A “full-step” method of motor control first energizes one coil in one polarity while the other coil is off. After 90 degrees of rotation, the first coil is turned off and the other coil is turned on in the opposite polarity for another 90 degrees. Then that coil is turned off and the first coil is re-energized for 90 degrees with a polarity different than before. Because the full-step method only allows steps of 90 degrees of rotation, a “micro-step” method of motor control was developed to provide better resolution. In one micro-step method, both coils are generally continuously driven with stepped voltages that are out of phase with each other. The stepped voltages vary from a positive maximum value to a negative maximum value.
Stepping motors are commonly used to move the pointer or needle of automotive gauges, such as for example, a speedometer or tachometer. In these applications, a return-to-zero (RTZ) technique is used to return the gauge pointer to a known position. This is used to re-synchronize the motor position in the event that the absolute motor position is lost. A loss in motor position could be caused by a number of reasons. For example, power may be lost while the motor is running or a motor controller loses synchronization due to an increase in motor load.
There are several RTZ techniques that have been employed which utilize a full-step control method to sense the stall condition. FIG. 1 illustrates full-step driving currents for a two phase stepping motor having coils A and B (not shown) in accordance with the prior art. With the full-step method, one of the motor coils is driven while the other coil un-driven. In FIG. 1, each time interval represents 90 degrees of rotation, or one full-step. At time interval 0, coil B is driven with a maximum positive current while coil A is not driven. At time interval 1, coil A is driven with a maximum positive current while coil B is not driven. At time interval 2, coil B is driven with a maximum negative current while coil A is not driven. Finally, at time interval 3, coil A is driven with a maximum negative current while coil B is not driven. During each of the full steps, the un-driven coil can be sampled to detect motor movement. The full-step control method suffers from several problems. First, the full-step movement is choppy and can sometimes be visibly seen and heard in the pointer movement if the rotation speed is slow. Second, the full-step control method can limit the maximum stall detect speed since it is desired to sample the coil after the load stabilizes to the new full-step position. Third, the detection resolution is limited to a full-step boundary which is one quarter of an electrical revolution.
Therefore, what is needed is a way to detect a stall condition in a stepping motor that solves the above problems.